package q98_isValidBST;

import CommonClass.Common.TreeNode;
public class Solution_1 {

    long pre = Long.MIN_VALUE;
    public static void main(String[] args) {

    }

    public boolean isValidBST(TreeNode root) {
        if (root == null) {
            return true;
        }
        // 先验证左侧
        if (!isValidBST(root.left)){
            return false;
        }
        // 然后判断当前节点与上一个节点
        // 在这里需要注意的是，当到达左侧最后一个子节点时
        // root比较的是long的最小值，保证了一定返回true
        if (root.val <= pre){
            return false;
        }
        // 并且能够保存下来上一个节点的val
        pre = root.val;

        // 最后再比较右子树，因为右子节点也要比上一个（也就是根节点）大，因此不需要改变判断符号
        // 同样是比较root.val <= pre
        return isValidBST(root.right);

    }
}
